package com.huahua.api.scheduled;

import com.huahua.api.service.WebClipboardService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * @author Huahua-Ai
 * @date 2025-01-21 22:40:00
 * @description 剪贴板定时清理任务
 */
@Component
@RequiredArgsConstructor
@Slf4j
public class ClipboardCleanupTask {

    private final WebClipboardService webClipboardService;

    /**
     * 每小时执行一次，清理过期的剪贴板
     */
    @Scheduled(cron = "0 0 * * * ?")
    public void cleanExpiredClipboards() {
        log.info("开始执行剪贴板清理任务");

        webClipboardService.cleanExpiredClipboards()
                .subscribe(
                        count -> {
                            if (count > 0) {
                                log.info("剪贴板清理任务完成，共清理 {} 个过期剪贴板", count);
                            } else {
                                log.debug("剪贴板清理任务完成，没有需要清理的剪贴板");
                            }
                        },
                        error -> log.error("剪贴板清理任务执行失败", error)
                );
    }

    /**
     * 每天凌晨2点执行一次深度清理
     * 清理超过7天的所有剪贴板（即使未过期）
     */
    @Scheduled(cron = "0 0 2 * * ?")
    public void deepClean() {
        log.info("开始执行剪贴板深度清理任务");

        // 这里可以添加更彻底的清理逻辑
        // 比如清理创建时间超过7天的剪贴板，无论是否设置了更长的过期时间
        webClipboardService.cleanExpiredClipboards()
                .subscribe(
                        count -> log.info("深度清理任务完成，共清理 {} 个剪贴板", count),
                        error -> log.error("深度清理任务执行失败", error)
                );
    }
}
